package woogieunit.annotations;

import java.lang.annotation.Documented;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import java.lang.annotation.ElementType;


/**
 * Describes a class as a BenchmarkSuite. A BenchmarkSuite serves as a logical container for 
 * the targetted benchmarks (methods) inside it. A class which holds targetted benchmarks does 
 * <u>not</u> have to be a BenchmarkSuite, but then each targetted benchmark must be run or 
 * specified individually.
 */
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
@Documented
public @interface BenchmarkSuite {
	/**
	 * The name of this suite - should be a descriptive, human-readable value
	 * @return
	 */
	String name();

	/**
	 * The number of times a suite should be executed. This can be overridden.
	 * @return
	 */
	int timesToRun() default 1;
}
